home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1986-11-30 | 11.6 KB | 416 lines
100 REM UPDATMAR Program 110 REM Data Entry to the Marriages File 120 REM By: Melvin O. Duke. Last Updated 19 February 1986. 200 REM Screen Definitions 210 WIDTH "scrn:", 80 220 SCREEN S1,S2,S3,S4 600 REM Titles 610 TITLE$ = "Update the Marriages File" 620 TITLE$ = TITLE$ + " ON DISPLAY" 700 REM Terminate if not called from the Menu 710 IF DD.MENU$ <> "" THEN 770 720 COLOR 7,0 : KEY ON : CLS : LOCATE 15,1 730 PRINT "Cannot run the" 740 PRINT TITLE$ 750 PRINT "Program, unless selected from the MENU" 760 END 770 REM OK 1000 REM Produce the first screen 1010 KEY ON : CLS : KEY OFF 1020 REM Draw the outer double box 1030 R1 = 1 : C1 = 1 : R2 = 24 : C2 = 79 : GOSUB 1300 1040 REM Find the title location 1050 TITLE.POS = 40 - INT(LEN(TITLE$)/2) 1060 REM Draw the title box 1070 R1=3:C1=TITLE.POS-2:R2=6:C2=TITLE.POS+LEN(TITLE$)+1:GOSUB 1500 1080 REM Print the title 1090 LOCATE 4,TITLE.POS : PRINT TITLE$ 1100 LOCATE 5,40-INT(LEN(VERSION$)/2) : PRINT VERSION$; 1230 REM Draw the Copyright box 1240 R1 = 19 : C1 = 21 : R2 = 22 : C2 = 59 : GOSUB 1300 1250 REM Print the Copyright 1260 LOCATE 20,40-INT(LEN(COPY1$)/2) : PRINT COPY1$; 1270 LOCATE 21,40-INT(LEN(COPY2$)/2) : PRINT COPY2$; 1280 GOTO 1700 1300 REM subroutine to print a double box 1310 COLOR P 1320 FOR I = R1 + 1 TO R2 - 1 1330 LOCATE I, C1 : PRINT CHR$(186); 1340 LOCATE I, C2 : PRINT CHR$(186); 1350 NEXT I 1360 FOR J = C1 + 1 TO C2 - 1 1370 LOCATE R1, J : PRINT CHR$(205); 1380 LOCATE R2, J : PRINT CHR$(205); 1390 NEXT J 1400 LOCATE R1, C1 : PRINT CHR$(201); 1410 LOCATE R1, C2 : PRINT CHR$(187); 1420 LOCATE R2, C1 : PRINT CHR$(200); 1430 LOCATE R2, C2 : PRINT CHR$(188); 1440 COLOR W 1450 RETURN 1500 REM subroutine to print a single box 1510 COLOR B 1520 FOR I = R1 + 1 TO R2 - 1 1530 LOCATE I, C1 : PRINT CHR$(179); 1540 LOCATE I, C2 : PRINT CHR$(179); 1550 NEXT I 1560 FOR J = C1 + 1 TO C2 - 1 1570 LOCATE R1, J : PRINT CHR$(196); 1580 LOCATE R2, J : PRINT CHR$(196); 1590 NEXT J 1600 LOCATE R1, C1 : PRINT CHR$(218); 1610 LOCATE R1, C2 : PRINT CHR$(191); 1620 LOCATE R2, C1 : PRINT CHR$(192); 1630 LOCATE R2, C2 : PRINT CHR$(217); 1640 COLOR W 1650 RETURN 1700 REM ask user to press a key to continue 1710 LOCATE 25,1 1720 PRINT "Have Data Diskette(s) in Place, then Press any key to continue."; 1730 K$ = INKEY$ : IF K$ = "" THEN 1730 1740 KEY ON : CLS : KEY OFF 2000 REM UPDATMAR Program Starts Here. 2010 REM Open the Marriages File 2020 OPEN DD.MARR$+"marrfile" AS #2 LEN = 128 2030 REM Open the Persons File 2040 OPEN DD.PERS$+"persfile" AS #1 LEN = 256 2050 FIELD 1, 5 AS F1$, 20 AS F2$, 30 AS F3$, 2 AS F4$, 5 AS F5$, 5 AS F6$, 5 AS F7$, 11 AS F8$, 18 AS F9$, 16 AS F10$, 16 AS F11$, 11 AS F12$, 18 AS F13$, 16 AS F14$, 16 AS F15$, 11 AS F16$, 18 AS F17$, 16 AS F18$, 16 AS F19$ 2060 FIELD 2, 5 AS M1$, 5 AS M2$, 5 AS M3$, 5 AS M4$, 11 AS M5$, 18 AS M6$, 16 AS M7$, 16 AS M8$, 45 AS M9$ 2070 REM ask the user for input 2080 LOCATE 23,1 : PRINT SPACE$(79); 2090 LOCATE 23,1 : PRINT "(0 to quit, ? to locate unused record)"; 2100 LOCATE 22,1 : PRINT SPACE$(79) : LOCATE 22,1 2110 INPUT "Enter Record Number of Marriage to Update"; REPLY$ 2120 IF REPLY$ <> "?" THEN 2270 2130 REM Locate an unused record 2140 FOUND = 0 : IF REC.NO = 0 THEN REC.NO = 1 2150 FOR LOOK = REC.NO TO MAX.MAR 2160 GET #2, LOOK 2170 LOCATE 15,1 : PRINT "Searching Record";LOOK; 2180 TT1 = CVS(M1$) 2190 IF TT1 > 0 THEN 2210 2200 FOUND = 1 : REC.NO = LOOK : LOOK = MAX.MAR 2210 NEXT LOOK 2220 IF FOUND = 1 THEN 2360 2230 PRINT "Unable to find an unused record above record";REC.NO 2240 PRINT "Either start from record 1 or extend the file" 2250 PRINT "Press any key to continue" 2260 GOTO 2070 2270 IF REPLY$ = "0" THEN 4810 2280 REC.NO = VAL(REPLY$) 2290 IF REC.NO < 1 OR REC.NO > MAX.MAR THEN 2300 ELSE 2350 2300 PRINT : PRINT "Number is out of range" 2310 PRINT "Press any key to continue" 2320 A$ = INKEY$ : IF A$ = "" THEN 2320 2330 KEY ON : CLS : KEY OFF 2340 GOTO 2070 2350 GET #2, REC.NO 2360 REM Extract information from the file for use 2370 TT1 = CVS(M1$) 2380 REM Disallow Update if Rec.no is Zero (never Created) 2390 IF TT1 <> 0 THEN 2460 2400 LOCATE 22,1 : PRINT SPACE$(79); 2410 LOCATE 23,1 : PRINT SPACE$(79); : LOCATE 22,1 2420 PRINT "Record Number is Zero. Must run the CREATMAR Program First." 2430 LOCATE 25,1 : PRINT "Press any key to continue"; 2440 A$ = INKEY$ : IF A$ = "" THEN 2440 2450 GOTO 4810 'Close the Files and return to the Menu 2460 TT2 = CVS(M2$) 2470 TT3 = CVS(M3$) 2480 TT4 = CVS(M4$) 2490 TT5$ = M5$ 2500 TT6$ = M6$ 2510 TT7$ = M7$ 2520 TT8$ = M8$ 2530 TT9$ = M9$ 2540 KEY ON : CLS : KEY OFF 2550 R1 = 1 : C1 = 1 : R2 = 21 : C2 = 79 : GOSUB 1300 'Double box 2560 R1 = 3 : C1 = 1 : R2 = 3 : C2 = 79 : GOSUB 3310 'Horizontal double 2570 R1 = 19 : C1 = 1 : R2 = 19 : C2 = 79 : GOSUB 3310 'Horizontal double 2580 LOCATE 2,33 : PRINT "Marriage Record" 2590 LOCATE 5, 3 : COLOR O : PRINT "Marriage Record-number:"; 2600 LOCATE 7, 3 : PRINT "Husband's Record-number:"; 2610 LOCATE 8, 3 : PRINT "Husband's Name:"; 2620 LOCATE 10, 3 : PRINT "Wife's Record-number:"; 2630 LOCATE 11, 3 : PRINT "Wife's Name:"; 2640 LOCATE 20, 3 : PRINT "Comments:"; 2650 LOCATE 5,42 : PRINT "Marriage Code:"; 2660 LOCATE 13, 3 : COLOR N : PRINT "Marriage Statistics:"; : COLOR O 2670 LOCATE 14, 3 : PRINT "Marriage-date:"; 2680 LOCATE 15, 3 : PRINT "Marriage-city:"; 2690 LOCATE 16, 3 : PRINT "Marriage-county:"; 2700 LOCATE 17, 3 : PRINT "State/Country:"; 2710 GOSUB 2730 'To print the current information 2720 GOTO 3400 'For User Input 2730 REM Print the Information Currently Present 2740 LOCATE 5,27 : PRINT SPACE$(5); 2750 LOCATE 5,27 : COLOR G : PRINT TT1; 2760 LOCATE 7,27 : PRINT SPACE$(5); 2770 LOCATE 7,27 : COLOR G : PRINT TT2; 2780 LOCATE 8,27 : PRINT SPACE$(51); 2790 REM Obtain the Husband's Record 2800 IF TT2 = 0 THEN GOSUB 5230 : GOTO 2960 ELSE GET #1, TT2 : GOSUB 4960 2810 REM Disallow if not Male 2820 IF LEFT$(T4$,1) = "M" THEN 2960 2830 COLOR W 2840 LOCATE 23,1 : PRINT SPACE$(79); 2850 LOCATE 24,1 : PRINT SPACE$(70); 2860 REM Test for Undefined Sex 2870 IF LEFT$(T4$,1) <> " " THEN 2900 2880 LOCATE 22,1 : PRINT "The Sex of the Husband is Undefined" 2890 GOTO 2910 2900 LOCATE 22,1 : PRINT "The Sex of the Husband is shown as: "; T4$; 2910 LOCATE 23,1 : PRINT "Cannot Save this Marriage Record"; 2920 LOCATE 25,1 : PRINT "Press any key to continue"; 2930 A$ = INKEY$ : IF A$ = "" THEN 2930 2940 REM Blank the Record and start over 2950 TT1 = -TT1 : GOSUB 4860 : GOSUB 2730 : GOTO 3400 2960 LOCATE 8,27 : COLOR G : PRINT LEFT$(T3$+" "+T2$,51); 2970 LOCATE 10,27 : PRINT SPACE$(5); 2980 LOCATE 10,27 : COLOR G : PRINT TT3; 2990 LOCATE 11,27 : PRINT SPACE$(51); 3000 REM Obtain the Wife's Record 3010 IF TT3 = 0 THEN GOSUB 5230 : GOTO 3170 ELSE GET #1, TT3 : GOSUB 4960 3020 REM Disallow if not Female 3030 IF LEFT$(T4$,1) = "F" THEN 3170 3040 COLOR W 3050 LOCATE 23,1 : PRINT SPACE$(79); 3060 LOCATE 24,1 : PRINT SPACE$(70); 3070 REM Test for Undefined Sex 3080 IF LEFT$(T4$,1) <> " " THEN 3110 3090 LOCATE 22,1 : PRINT "The Sex of the Wife is Undefined" 3100 GOTO 3120 3110 LOCATE 22,1 : PRINT "The Sex of the Wife is shown as: "; T4$; 3120 LOCATE 23,1 : PRINT "Cannot Save this Marriage Record"; 3130 LOCATE 25,1 : PRINT "Press any key to continue"; 3140 A$ = INKEY$ : IF A$ = "" THEN 3140 3150 REM Blank the Record and start over 3160 TT1 = -TT1 : GOSUB 4860 : GOSUB 2730 : GOTO 3400 3170 LOCATE 11,27 : COLOR G : PRINT LEFT$(T3$+" "+T2$,51); 3180 LOCATE 5,57 : PRINT SPACE$(5); 3190 LOCATE 5,57 : COLOR G : PRINT TT4; 3200 LOCATE 14,28 : PRINT SPACE$(11); 3210 LOCATE 14,28 : COLOR G : PRINT LEFT$(TT5$,11); 3220 LOCATE 15,28 : PRINT SPACE$(18); 3230 LOCATE 15,28 : COLOR G : PRINT LEFT$(TT6$,18); 3240 LOCATE 16,28 : PRINT SPACE$(16); 3250 LOCATE 16,28 : COLOR G : PRINT LEFT$(TT7$,16); 3260 LOCATE 17,28 : PRINT SPACE$(16); 3270 LOCATE 17,28 : COLOR G : PRINT LEFT$(TT8$,16); 3280 LOCATE 20,20 : PRINT SPACE$(45); 3290 LOCATE 20,20 : COLOR G : PRINT LEFT$(TT9$,45); : COLOR 7 3300 RETURN 3310 REM Subroutine to draw a double horizontal line. Attach to double. 3320 COLOR P 3330 FOR J = C1 + 1 TO C2 - 1 3340 LOCATE R1,J : PRINT CHR$(205); 3350 NEXT J 3360 LOCATE R1,C1 : PRINT CHR$(204); 3370 LOCATE R1,C2 : PRINT CHR$(185); 3380 COLOR W 3390 RETURN 3400 REM Routines to Obtain information from the User 3410 LOCATE 22,1 : PRINT SPACE$(79); 3420 LOCATE 23,1 : PRINT SPACE$(79); 3430 LOCATE 24,1 : PRINT SPACE$(79); 3440 LOCATE 25,1 : PRINT SPACE$(79); 3450 LOCATE 24,1 : PRINT "('enter' to leave alone, '/ enter' to end record, or reply as shown)"; 3460 LOCATE 23,1 3470 INPUT "Enter the Record Number";REPLY$ 3480 IF REPLY$ = "/" THEN 4440 3490 IF REPLY$ = "" THEN 3600 3500 IF ABS(VAL(REPLY$)) = ABS(TT1) THEN 3570 ELSE 3510 3510 REM Prevent Change of Rec.no 3520 LOCATE 24,1 : PRINT SPACE$(79); : LOCATE 22,1 3530 PRINT "Cannot Change the Record Number to another number."; 3540 LOCATE 25,1 : PRINT "Press any key to continue"; 3550 A$ = INKEY$ : IF A$ = "" THEN 3550 3560 GOTO 3400 3570 TT1 = VAL(REPLY$) 3580 IF TT1 < 1 THEN GOSUB 4860 : GOSUB 2730 : GOTO 4440 'Null Record 3590 GOSUB 2730 3600 LOCATE 23,1 : PRINT SPACE$(79); 3610 REM Terminate record update if negative 3620 IF TT1 < 1 THEN 4440 3630 LOCATE 23,1 : COLOR W 3640 INPUT "Enter the Husband's Persons Record-Number";REPLY$ 3650 IF REPLY$ = "/" THEN 4440 3660 IF REPLY$ = "" THEN 3720 3670 TT2 = VAL(REPLY$) 3680 IF TT2 >= 0 AND TT2 <= MAX.PER THEN 3700 3690 LOCATE 22,1 : PRINT "Number out of range"; : GOTO 3600 3700 LOCATE 22,1 : PRINT SPACE$(79); 3710 GOSUB 2760 3720 LOCATE 23,1 : PRINT SPACE$(79); 3730 REM Disallow if Husband's Record-number is zero 3740 IF TT2 <> 0 THEN 3820 3750 COLOR W : LOCATE 24,1 : PRINT SPACE$(79); 3760 LOCATE 22,1 : PRINT "Husband's Record Number Cannot be Zero"; 3770 LOCATE 23,1 : PRINT "Cannot Save this Marriage Record"; 3780 LOCATE 25,1 : PRINT "Press any key to continue"; 3790 A$ = INKEY$ : IF A$ = "" THEN 3790 3800 REM Blank the Record and start over 3810 TT1 = -TT1 : GOSUB 4860 : GOSUB 2730 : GOTO 3400 3820 LOCATE 23,1 : PRINT SPACE$(79); 3830 LOCATE 23,1 : COLOR W 3840 INPUT "Enter the Wife's Persons Record-Number";REPLY$ 3850 IF REPLY$ = "/" THEN 4440 3860 IF REPLY$ = "" THEN 3920 3870 TT3 = VAL(REPLY$) 3880 IF TT3 >= 0 AND TT3 <= MAX.PER THEN 3900 3890 LOCATE 22,1 : PRINT "Number out of range"; : GOTO 3820 3900 LOCATE 22,1 : PRINT SPACE$(79); 3910 GOSUB 2970 3920 LOCATE 23,1 : PRINT SPACE$(79); 3930 REM Disallow if Wife's Record-number is zero 3940 IF TT3 <> 0 THEN 4020 3950 COLOR W : LOCATE 24,1 : PRINT SPACE$(79); 3960 LOCATE 22,1 : PRINT "Wife's Record Number Cannot be Zero"; 3970 LOCATE 23,1 : PRINT "Cannot Save this Marriage Record"; 3980 LOCATE 25,1 : PRINT "Press any key to continue"; 3990 A$ = INKEY$ : IF A$ = "" THEN 3990 4000 REM Blank the Record and start over 4010 TT1 = -TT1 : GOSUB 4860 : GOSUB 2730 : GOTO 3400 4020 LOCATE 23,1 : COLOR W 4030 INPUT "Enter the Marriage Code";REPLY$ 4040 IF REPLY$ = "/" THEN 4440 4050 IF REPLY$ = "" THEN 4080 4060 TT4 = VAL(REPLY$) 4070 GOSUB 3180 4080 LOCATE 23,1 : PRINT SPACE$(79); 4090 LOCATE 23,1 : COLOR W 4100 INPUT "Enter the Marriage-Date as: dd Mmm yyyy";REPLY$ 4110 IF REPLY$ = "/" THEN 4440 4120 IF REPLY$ = "" THEN 4150 4130 RSET TT5$ = REPLY$ 4140 GOSUB 3200 4150 LOCATE 23,1 : PRINT SPACE$(79); 4160 LOCATE 23,1 : COLOR 7 4170 INPUT "Enter the Marriage-city";REPLY$ 4180 IF REPLY$ = "/" THEN 4440 4190 IF REPLY$ = "" THEN 4220 4200 TT6$ = REPLY$ 4210 GOSUB 3220 4220 LOCATE 23,1 : PRINT SPACE$(79); 4230 LOCATE 23,1 : COLOR 7 4240 INPUT "Enter the Marriage-county";REPLY$ 4250 IF REPLY$ = "/" THEN 4440 4260 IF REPLY$ = "" THEN 4290 4270 TT7$ = REPLY$ 4280 GOSUB 3240 4290 LOCATE 23,1 : PRINT SPACE$(79); 4300 LOCATE 23,1 : COLOR 7 4310 INPUT "Enter the Marriage-State or Country:";REPLY$ 4320 IF REPLY$ = "/" THEN 4440 4330 IF REPLY$ = "" THEN 4360 4340 TT8$ = REPLY$ 4350 GOSUB 3260 4360 LOCATE 23,1 : PRINT SPACE$(79); 4370 LOCATE 23,1 : COLOR 7 4380 INPUT "Enter any Comments";REPLY$ 4390 IF REPLY$ = "/" THEN 4440 4400 IF REPLY$ = "" THEN 4430 4410 TT9$ = REPLY$ 4420 GOSUB 3280 4430 REM 4440 REM Completed this Record 4450 LOCATE 24,1 : PRINT SPACE$(79); 4460 LOCATE 23,1 : PRINT SPACE$(79); 4470 LOCATE 23,1 : COLOR W 4480 INPUT "Type s (save), m (more), or f (forget)";REPLY$ 4490 IF LEFT$(REPLY$,1) = "m" THEN LOCATE 23,1 : PRINT SPACE$(79); : GOTO 3400 4500 IF LEFT$(REPLY$,1) = "M" THEN LOCATE 23,1 : PRINT SPACE$(79); : GOTO 3400 4510 IF LEFT$(REPLY$,1) = "f" THEN KEY ON : CLS : KEY OFF : GOTO 2070 4520 IF LEFT$(REPLY$,1) = "F" THEN KEY ON : CLS : KEY OFF : GOTO 2070 4530 IF LEFT$(REPLY$,1) = "s" THEN LOCATE 23,1 : PRINT SPACE$(79); : GOTO 4570 4540 IF LEFT$(REPLY$,1) = "S" THEN LOCATE 23,1 : PRINT SPACE$(79); : GOTO 4570 4550 LOCATE 22,1 : PRINT "Error in reply"; 4560 GOTO 4460 4570 REM Routine to SAVE the newly updated record 4580 REM Prevent saving of Person/non-Person Marriage 4590 IF TT1 < 0 THEN 4690 'ok if empty 4600 IF TT2 = 0 OR TT3 = 0 THEN 4610 ELSE 4690 4610 LOCATE 22,1 : PRINT SPACE$(79); 4620 LOCATE 22,1 4630 PRINT "Cannot s (save) unless both spouses have numbers that are not zero." 4640 REM Ask for More or Forget, but not Save 4650 LOCATE 23,1 : PRINT SPACE$(79); 4660 LOCATE 23,1 : COLOR W 4670 INPUT "Type m (more), or f (forget)"; REPLY$ 4680 GOTO 4490 4690 LSET M1$ = MKS$(TT1) 4700 LSET M2$ = MKS$(TT2) 4710 LSET M3$ = MKS$(TT3) 4720 LSET M4$ = MKS$(TT4) 4730 RSET M5$ = TT5$ 4740 LSET M6$ = TT6$ 4750 LSET M7$ = TT7$ 4760 LSET M8$ = TT8$ 4770 LSET M9$ = TT9$ 4780 PUT #2, REC.NO 4790 KEY ON : CLS : KEY OFF 4800 GOTO 2070 4810 CLOSE #2 4820 CLOSE #1 4830 KEY ON : CLS : KEY OFF : LOCATE 21,1 4840 PRINT "End of Program" 4850 RUN DD.MENU$+"menu" 4860 REM Blank a Negative Record 4870 TT2 = 0 4880 TT3 = 0 4890 TT4 = 0 4900 TT5$ = "" 4910 TT6$ = "" 4920 TT7$ = "" 4930 TT8$ = "" 4940 TT9$ = "" 4950 RETURN 4960 REM Routine to Extract Personal Information 4970 T1 = CVS(F1$) 4980 T2$ = F2$ 4990 FOR J = 1 TO LEN(F2$) -1 5000 IF RIGHT$(T2$,1)=" " THEN T2$ = LEFT$(T2$,LEN(T2$)-1) ELSE J = LEN(F2$)-1 5010 T3$ = F3$ 5020 NEXT J 5030 FOR J = 1 TO LEN(F3$) -1 5040 IF RIGHT$(T3$,1)=" " THEN T3$ = LEFT$(T3$,LEN(T3$)-1) ELSE J = LEN(F3$)-1 5050 NEXT J 5060 T4$ = F4$ 5070 T5 = CVS(F5$) 5080 T6 = CVS(F6$) 5090 T7 = CVS(F7$) 5100 T8$ = F8$ 5110 T9$ = F9$ 5120 T10$ = F10$ 5130 T11$ = F11$ 5140 T12$ = F12$ 5150 T13$ = F13$ 5160 T14$ = F14$ 5170 T15$ = F15$ 5180 T16$ = F16$ 5190 T17$ = F17$ 5200 T18$ = F18$ 5210 T19$ = F19$ 5220 RETURN 5230 REM Blank out a Record 5240 T1 = 0 5250 T2$ = "" 5260 T3$ = "" 5270 T4$ = "" 5280 T5 = 0 5290 T6 = 0 5300 T7 = 0 5310 T8$ = "" 5320 T9$ = "" 5330 T10$ = "" 5340 T11$ = "" 5350 T12$ = "" 5360 T13$ = "" 5370 T14$ = "" 5380 T15$ = "" 5390 T16$ = "" 5400 T17$ = "" 5410 T18$ = "" 5420 T19$ = "" 5430 RETURN